
export const reg = {
  tel: /^1[3-9]\d{9}$/,
  phone: /0\d{2,3}-\d{7,8}$/,
  phone400: /^400[0-9]{7}$/,
  email: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/,
  number: /^\+?[0-9]*$/,

  // 验证手机号
  valiDateTel: (rule, value, callback) => {
    if (!value) {
      callback(new Error('请输入手机号'))
    } else if (!/^1[3-9]\d{9}$/.test(value)) {
      callback(new Error('请输入有效的手机号码'))
    } else {
      callback()
    }
  },
  // 验证座机号
  valiDatePhone: (rule, value, callback) => {
    if (!value) {
      callback(new Error('请输入座机号'))
    } else if (!/0\d{2,3}-\d{7,8}$/.test(value)) {
      callback(new Error('请输入有效的座机号'))
    } else {
      callback()
    }
  },
  // 验证座机号
  valiDatePhone400: (rule, value, callback) => {
    if (!value) {
      callback(new Error('请输入400座机号'))
    } else if (!/^400[0-9]{7}$/.test(value)) {
      callback(new Error('请输入有效的400座机号'))
    } else {
      callback()
    }
  },
  // 验证400电话|手机号码|座机号码
  validateAllPhone: (rule, value, callback) => {
    rule.text = rule.text || '电话号码'
    let reg = /((^400)-([0-9]{7})$)|(^1[3-9]\d{9}$)|((^0\d{2,3})-(\d{7,8})$)/
    if (!value && !rule.noValid) {
      callback(new Error(`请输入${rule.text}`))
    } else if (reg.test(value)) {
      callback()
    } else if (rule.noValid && !value) {
      callback()
    } else {
      callback(new Error(`请输入有效的${rule.text}`))
    }
  },
  // 验证是否为数字
  valiDateFloat: (rule, value, callback) => {
    rule.text = rule.text || '数字'
    rule.reg_type = rule.reg_type || 1 // 1必须输入大于0的数字；2可为0
    let reg = rule.reg_type === 1 ? /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/ : /^(([0-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/
    if (value === '') {
      callback(new Error(`请输入${rule.text}`))
    } else if (rule.reg_type === 1 && value * 1 === 0) {
      callback(new Error('请输入大于0的数字'))
    } else if (!reg.test(value)) {
      callback(new Error('请输入正确的数字，最多保留2位小数'))
    } else {
      callback()
    }
  },
  // 验证是否为金额
  isMoney: (rule, value, callback) => {
    rule.text = rule.text || '金额'
    rule.max_num = rule.max_num || 0
    rule.reg_type = rule.reg_type || 2 // 1必须输入大于0的数字；2可为0
    let reg = rule.reg_type === 1 ? /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/ : /^(([0-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/
    if (value === '') {
      callback(new Error(`请输入${rule.text}`))
    } else if (rule.reg_type === 1 && value * 1 === 0) {
      callback(new Error('请输入大于0的金额'))
    } else if (!reg.test(value)) {
      callback(new Error(`请输入正确的金额，最多保留2位小数`))
    } else if (rule.max_num && value * 1 > rule.max_num) {
      callback(new Error(`请输入正确的金额，不能大于${rule.max_num}`))
    } else {
      callback()
    }
  },
  // 验证是否为百分比
  isPercent: (rule, value, callback) => {
    let reg = /^(?:0|[1-9][0-9]?|100)$/
    if (!reg.test(value)) {
      callback(new Error('请输入0至100的整数'))
    } else {
      callback()
    }
  },
  // 验证是否是整数
  isNum: (rule, value, callback) => {
    rule.text = rule.text || '数字'
    rule.reg_type = rule.reg_type || 1 // 1必须输入大于0的数字；2可为0
    if (value === '') {
      callback(new Error(`请输入${rule.text}`))
    } else if (rule.reg_type === 1 && value * 1 === 0) {
      callback(new Error('请输入大于0的整数'))
    } else if (!/^\+?[0-9]*$/.test(value)) {
      callback(new Error('请输入非负整数'))
    } else {
      callback()
    }
  },
  // 是否为空
  isNotNull: (rule, value, callback) => {
    rule.text = rule.text || '内容'
    rule.reg_type = rule.reg_type || 1 // 2非空
    if (rule.reg_type === 2 && value) {
      value = value.replace(/^\s+|\s+$/g, '')
    }
    if (value === '' || value === undefined || value === false || JSON.stringify(value) === '[]' || JSON.stringify(
      value) === '{}') {
      callback(new Error(`请输入${rule.text}`))
    } else {
      callback()
    }
  }
}
